package com.micro.glszh.stat.base;

/**
 * @author gaopengfei
 * @version 1.0
 * @description: http 状态码
 * @date 2022/6/22 9:58
 */
public enum HttpCodeEnum {

    /**
     * 状态码说明
     * ----------------------------------------------------------------------------
     * 200 SUCCESS - [GET]：服务器成功返回用户请求的数据，该操作是幂等的（Idempotent）。
     * 400 INVALID REQUEST - [POST/PUT/PATCH]：用户发出的请求有错误，服务器没有进行新建或修改数据的操作，该操作是幂等的。
     * 401 Unauthorized - [*]：表示用户没有权限（令牌、用户名、密码错误）。
     * 403 Forbidden - [*] 表示用户得到授权（与401错误相对），但是访问是被禁止的。
     * 404 NOT FOUND - [*]：用户发出的请求针对的是不存在的记录，服务器没有进行操作，该操作是幂等的。
     * 406 Not Acceptable - [GET]：用户请求的格式不可得（比如用户请求JSON格式，但是只有XML格式）。
     * 410 Gone -[GET]：用户请求的资源被永久删除，且不会再得到的。
     * 422 VALIDATE_FAILED entity - [POST/PUT/PATCH] 当创建一个对象时，发生一个验证错误。
     * 500 INTERNAL SERVER ERROR - [*]：服务器发生错误，用户将无法判断发出的请求是否成功。
     * 600 MODEL_NOT_EXIST - 模型不存在
     * ----------------------------------------------------------------------------
     *
     * @author gaopengfei
     * @date 2022/6/30 14:12
     */
    SUCCESS(200, "操作成功"),

    /**===============================================客户端错误定义=====================================================*/
    INVALID_REQUEST(400, "参数错误"),
    UNAUTHORIZED(401, "没有权限"),
    FORBIDDEN(403, "禁止访问"),
    NOT_FOUND(404, "资源不存在"),
    NOT_ACCEPTABLE(406, "请求的格式不正确"),
    GONE(410, "数据被删除"),
    VALIDATE_FAILED(422, "参数验证错误"),

    /**================================================服务端异常定义====================================================*/

    INTERNAL_SERVER_ERROR(500, "服务器发生错误"),
    FAILED(501, "操作失败"),

    /**=================================================公共异常定义=====================================================*/

    EXIST(1000, "已存在"),
    NOT_EXIST(1001, "不存在"),
    BODY_NOT_MATCH(1002, "请求的数据格式不符!"),
    SIZE_LIMIT_EXCEEDED_EXCEPTION(1003,"文件大小超限"),
    CONFIG_ERROR(1004, "配置文件错误"),


    /**==================================================认证与鉴权异常定义==============================================*/

    AUTH_EXPIRED(3000, "认证到期"),
    TOKEN_ERR(3001, "token无效"),
    ACCOUNT_DISABLED(3002, "该账户已被禁用，请联系管理员!"),
    ACCOUNT_LOCKED(3003, "该账号已被锁定，请联系管理员!"),
    ACCOUNT_EXPIRED(3004, "该账号已过期，请联系管理员!"),
    CREDENTIALS_EXPIRED(3005, "该账户的登录凭证已过期，请重新登录!"),
    USER_NOT_EXIST(3006, "用户不存在！"),
    USERNAME_PASSWORD_ERROR(3007, "用户名密码不正确！"),
    CLIENT_AUTHENTICATION_FAILED(3008,"客户端认证失败!"),
    GRANT_TYPE_NOT_EXIST(3009, "grant type 不支持或不存在！"),
    WX_AUTH_CODE_FAULT(3010,"微信认证失败"),


;

    private final int code;
    private final String message;

    HttpCodeEnum(final int code, final String message) {
        this.code = code;
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

    public int getCode() {
        return code;
    }

}
